/* * This is part of Geomajas, a GIS framework, http://www.geomajas.org/. * * Copyright 2008-2015 Geosparc nv, http://www.geosparc.com/, Belgium. * * The program is available in open source according to the GNU Affero * General Public License. All contributions in this program are covered * by the Geomajas Contributors License Agreement. For full licensing * details, see LICENSE.txt in the project root. */ package org.geomajas.gwt2.plugin.corewidget.example.client.sample.dialog; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.MouseDownEvent; import com.google.gwt.event.dom.client.MouseDownHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DockLayoutPanel; import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.InlineLabel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import org.geomajas.gwt2.example.base.client.sample.SamplePanel; import org.geomajas.gwt2.plugin.corewidget.example.client.i18n.SampleMessages; /** * Closeable dialog widget showcase panel. * * @author Dosi Bingov * @author David Debuck */ public class CloseableDialogExample implements SamplePanel { private SampleMessages msg = GWT.create(SampleMessages.class); private DockLayoutPanel rootElement; private int clicked; @UiField protected Button button; @UiField protected VerticalPanel layerEventLayout; @UiField protected ScrollPanel scrollPanel; private static final CloseableDialogUiBinder UIBINDER = GWT.create(CloseableDialogUiBinder.class); /** * UI binder interface. */ interface CloseableDialogUiBinder extends UiBinder<DockLayoutPanel, CloseableDialogExample> { } public CloseableDialogExample() { rootElement = UIBINDER.createAndBindUi(this); button.addMouseDownHandler(new MouseDownHandler() { @Override public void onMouseDown(MouseDownEvent mouseDownEvent) { final CloseableDialogBoxWidget widget = new CloseableDialogBoxWidget(); VerticalPanel panel = new VerticalPanel(); panel.setWidth("100%"); panel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); HorizontalPanel top = new HorizontalPanel(); top.setSpacing(10); InlineLabel labelTop = new InlineLabel(msg.closeableDialogBoxExampleLabel()); top.add(labelTop); HorizontalPanel middle = new HorizontalPanel(); middle.setSpacing(10); final Button middleButton = new Button(msg.closeableDialogBoxExampleButton()); middle.add(middleButton); HorizontalPanel bottom = new HorizontalPanel(); bottom.setSpacing(10); final InlineLabel bottomlabel = new InlineLabel(msg.loremIpsum()); bottom.add(bottomlabel); middleButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (clicked < 3) { bottomlabel.setText( bottomlabel.getText() + bottomlabel.getText() ); layerEventLayout.add(new Label(msg.closeableDialogBoxExampleButtonMessage())); scrollPanel.scrollToBottom(); clicked++; if (clicked == 3) { middleButton.setText(msg.closeableDialogBoxExampleButtonClear()); } } else { layerEventLayout.add(new Label(msg.closeableDialogBoxExampleButtonClearMessage())); scrollPanel.scrollToBottom(); middleButton.setText(msg.closeableDialogBoxExampleButton()); bottomlabel.setText(msg.loremIpsum()); clicked = 0; } } }); panel.add(top); panel.add(middle); panel.add(bottom); widget.addContent(panel); widget.setGlassEnabled(true); widget.setModal(true); widget.setTitle(msg.closeableDialogTitle()); widget.setSize(380, 150); widget.center(); widget.show(); widget.setOnCloseHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { layerEventLayout.add(new Label(msg.closeableDialogBoxHandlerMessage())); scrollPanel.scrollToBottom(); } }); } }); } @Override public Widget asWidget() { return rootElement; } }